/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 沈明月
 * Date: 2022-11-01
 * Time: 23:28
 */
public class KnowledgeFive {
//运算符  表达式==变量和运算符的结合----->逻辑控制

//基本四则运算符：加减乘除模（+、-、*、/、%）
    public static void main1(String[] args) {
        System.out.println(5/2);//2
        System.out.println((float)5/2);//2.5
        System.out.println(5/(float)2);//2.5
        System.out.println((float)(5/2));//2

        System.out.println(10%3);//1
        System.out.println(10%-3);//1---->10=(-3)*(-3)+1;下面同理
        System.out.println(-10%3);//-1---->-10=3*（-3）+(-1)
        System.out.println(-10%-3);//-1--->-10=(-3)*(-3)+(-1)

        System.out.println(11.5%2);//1.5（Java取模允许计算小数）
        //两侧操作数类型不一致时靠大的运行
    }

//增量运算符：+=、-=、*=、/=
    public static void main2(String[] args) {
        int a=10;
        a+=1;
        System.out.println(a);

        short sh=12;
            //sh=sh+2;//不同类型，不能相加
        sh+=2;
        System.out.println(sh);
    }

//自增、自减运算符（和C语言一样）
    public static void main3(String[] args) {
        int a=10;
        int b=++a;
        int d=10;
        int c=d++;
        System.out.println(a);//11
        System.out.println(b);//11
        System.out.println(c);//10
    }

//关系运算符（和C语言一模一样）
    public static void main4(String[] args) {
        System.out.println(1<5);//只输出true/false
            //System.out.println(3<a<100);//3<a--->true;  true<100--->比不了
            //error
    }

//逻辑运算符
// 逻辑与（布尔表达式1&&布尔表达式2）--->结果是true/false
//逻辑或||（同理）
//逻辑非：！布尔表达式----！true/!false
    public static void main5(String[] args) {
        int a=1;
        int b=2;
        //逻辑与
        System.out.println(a==1&&b==2);//完整的表达式
        System.out.println(a==2&&b==2);//false
        System.out.println(a==2&b==2);//&符号两边如果是布尔表达式，则相当于逻辑运算，|页也是如此
        //此时和&&相比，不能进行短路运算
        System.out.println(a==2&&(1/0)==0);//false,短路语，第一个布尔表达式为假，不会计算第二个，直接就false了
            // System.out.println(1/0);//error
        //逻辑或
        System.out.println(a==1||(1/0==0));//true
        //逻辑或同样也存在这种短路运算
        //当第一个布尔表达式为真时，不会计算第二个布尔表达式，直接输出真
        //逻辑非
        System.out.println(!(a==10));
    }

//位运算符：&（按位与，按比特位与）、|（按位或）、^（按位异或）、>>（右移）、<<（左移）、>>>（无符号右移，统统在左边补零）、没有无符号左移9因为没必要）
    public static void main6(String[] args) {
        //详细笔记见OneNote
        //&--->按位与，对应位只要有0就是0
        //|--->按位或，对应位只要有1就是1
        //^--->按位异或，对应位逻辑不同为1，相同为0
        //>>a和<<a--->右移/左移a位，尖端朝哪就往哪边移，另一边则补0
        //>>>--->无符号右移，没有无符号左移，因为无符号左移本质上和左移并无太大区别
    }

//条件运算符：
    public static void main7(String[] args) {
        boolean flg=(true==true)?(true==true)?false:true:true;//false
        //代码分析：
        //boolean flg=(true==true)?【(true==true)?false:true】:true;
        //boolean flg=(true==true)?【】:true;
        //【】内计算得false;
        //于是：(true==true)?false:true;
        //显然答案时false;
    }
}
